In today's computing environment, it is becoming more and more common to have an application that executes on one machine while storing some data on the machine on which the application is executing and other data related to the application on one or more other machines. For example, an e-mail server for a large company may execute and store some of its configuration data on one machine while storing data related to e-mails on a group of other machines. With the critical nature of this and other types of data, it is very important that the data is backed up frequently.
Furthermore, as the world becomes more information-driven, it is becoming more and more expensive to block access for any significant period of time to a machine or group of machines in order to create a backup. The data involved in a backup may amount to many gigabytes or terabytes and may involve many machines. Even with fast backup machines, backing up this amount of data often creates unacceptable down time or inconsistent backups with current methods.
What is needed is a framework for backing up systems that may have data spread across multiple machines. Ideally, such a framework would lend itself to backing up the data with minimal impact to the other users and applications attempting to use the machines.